package com.library.workbench.mapper;

import com.library.workbench.pojo.Book;
import com.library.workbench.pojo.Borrow;
import java.util.List;
import java.util.Map;

public interface BorrowMapper {
    int deleteByPrimaryKey(String borrowId);

    int insert(Borrow row);

    Borrow selectByPrimaryKey(String borrowId);

    List<Borrow> selectAll();

    int updateByPrimaryKey(Borrow row);

    /**
     * 根据userId查询用户借阅信息
     * @param userId
     * @return
     */
    List<Borrow> selectBorrowByUserId(String userId);

    /**
     * 根据bookAccount、bookName、author模糊查询图书馆中未借出的图书信息
     * @param map
     * @return
     */
    List<Book> queryBooksByNameOrAuthorOrActForPage(Map<String,Object> map);

    /**
     * 根据bookAccount、bookName、author模糊查询图书馆中未借出的图书总数
     * @param map
     * @return
     */
    int queryBooksByNameOrAuthorOrActForRows(Map<String,Object> map);

    /**
     * 插入借阅信息
     * @param borrow
     * @return
     */
    int insertBorrowInfoByBookIdUserId(Borrow borrow);

    /**
     * 根据用户id查询需要归还书籍的借阅信息
     * @param userId
     * @return
     */
    List<Borrow> queryRequiredReturnBookBorrowInfoByUserId(String userId);

    /**
     * 根据id归还书籍
     * @param borrow
     * @return
     */
    int returnBorrowById(Borrow borrow);

    /**
     * 根据id查询借阅信息
     * @param borrowId
     * @return
     */
    Borrow selectBorrowById(String borrowId);

    /**
     * 根据userCount和bookName模糊查询借阅信息
     * @param map
     * @return
     */
    List<Borrow> queryBorrowInfoByConditionForPage(Map<String,Object> map);

    /**
     * 根据userCount和bookName模糊查询借阅信息总记录条数
     * @param map
     * @return
     */
    int queryBorrowInfoByConditionForRows(Map<String,Object> map);

    /**
     * 根据bookName,bookAccount,author,userId模糊查询需要归还的书籍信息
     * @param map
     * @return
     */
    List<Borrow> queryRequiredReturnBookBorrowInfoByUserIdBookNameBookActAuthorForPage(Map<String,Object> map);

    /**
     * 根据bookName,bookAccount,author,userId模糊查询需要归还的总数
     * @param map
     * @return
     */
    int queryRequiredReturnBookBorrowInfoByUserIdBookNameBookActAuthorForRows(Map<String,Object> map);

}